51单片机之算术运算指令ADDC、SUBB等

您所在的位置:网站首页 单片机r0 r1 51单片机之算术运算指令ADDC、SUBB等

51单片机之算术运算指令ADDC、SUBB等

2024-05-30 06:52| 来源: 网络整理| 查看: 265

文章目录 前言一、加法指令 ADDADD A, XXX 二、带进位加法指令 ADDCADDC A, XXX 三、带借位减法指令 SUBBSUBB A, XXX 四、乘除法指令MUL ABDIV AB 五、十进制调整指令DA A 六、加一减一指令INC XXXDEC XXX

前言

1.算术指令包括加、减、乘、除基本四则运算 2.在逻辑运算单元(ALU)中能进行加、减、乘、除、加1,减1,BCD数转十进制调整等

一、加法指令 ADD

ADD英文全称:Addition

ADD A, XXX

目的:将第二操作数(XXX)与第一操作数(A)的内容进行相加,得到的结果存放在累加器A中; 第二操作数:寄存器Rn、直接地址direct、间接地址@Ri、立即数#data。

助记符功能对标志位影响字节数周期数POVACCYADD A, Rn(A) + (Rn) -> A√√√√11ADD A, @Ri(A) + ((Ri)) -> A√√√√11ADD A, direct(A) + (direct) -> A√√√√21ADD A, #data(A) + #data -> A√√√√21 上述的指令会影响标志位P、OV、AC、CY位;当和的第3位有进位则将AC位(辅助进位标志)置1;当和的第7位有进位则将CY位(进位标志)置1;由和的奇偶个1确定P置1还是清零,奇数个1置1,偶数个1清零;溢出标记位OV只有带符号数运算时才有用;对于带符号数来说,溢出标记位OV取值为 其和的第6位和第7位进行异或逻辑运算的结果OV = 1表示两个正数求和结果为负数的错误结果 或 两个负数求和结果为正数的错误结果;

例 两个正数带符号数 0100 0011 与 0100 0001 两个负数带符号数 1000 0011 与 1000 0001

0100 0011 + 0100 0001 = 1000 0100 其结果是一个负数;1000 0011 + 1000 0001 = 0000 0100 其结果是一个正数;需要OV来表示结果溢出出错。

例 累加器A的内容为 043H,R1的内容为10H,地址10H的内容为20H

MOV A, R1:将A中内容与R1中的内容进行相加存放在A中,(A) + (R1) = 53H -> A,P = 0,AC = 0,CY = 0;MOV A, @R1:将A中内容与R1中的所指向地址空间的内容进行相加存放在A中,(A) + ((R1)) = 63H -> A,P = 0,AC = 0,CY = 0;MOV A, 10H:将A中内容与10H中的内容进行相加存放在A中,(A) + (10H) = 63H -> A,P = 0,AC = 0,CY = 0;MOV A, #3EH:将A中内容与10H中的内容进行相加存放在A中,(A) + 33H = 80H -> A,P = 1,AC = 1,CY = 0。 二、带进位加法指令 ADDC

ADDC英文全称:Add with Carry

ADDC A, XXX

目的:将第二操作数(XXX)、第一操作数(A)的内容和进位CY三个数进行相加,得到的结果存放在累加器A中; 第二操作数:寄存器Rn、直接地址direct、间接地址@Ri、立即数#data;

助记符功能对标志位影响字节数周期数POVACCYADDC A, Rn(A) + (Rn) + CY -> A√√√√11ADDC A, @Ri(A) + ((Ri)) + CY -> A√√√√11ADDC A, direct(A) + (direct) + CY -> A√√√√21ADDC A, #data(A) + #data + CY -> A√√√√21

例 累加器A的内容为 0C3H,R0的内容为0AAH,R1的内容为10H,10H的内容为0AAH,(CY) = 1;

ADDC A, R0:将A中内容、R0中的内容和CY三个数进行相加存放在A中,CY = 1,OV = 1,AC = 0;ADDC A, @R1:将A中内容、R1所指向地址空间的内容和CY三个数进行相加存放在A中,CY = 1,OV = 1,AC = 0;ADDC A, 10H:将A中内容、10H中的内容和CY三个数进行相加存放在A中,CY = 1,OV = 1,AC = 0;ADDC A, #0AAH:将A中内容、立即数#0AAH和CY三个数进行相加存放在A中,CY = 1,OV = 1,AC = 0。 三、带借位减法指令 SUBB

SUBB英文全称:Subtract with Borrow

SUBB A, XXX

目的:将第一操作数(A)的内容减第二操作数(XXX)和进位CY三个数,得到的结果存放在累加器A中; 第二操作数:寄存器Rn、直接地址direct、间接地址@Ri、立即数#data;

助记符功能对标志位影响字节数周期数POVACCYSUBB A, Rn(A) - (Rn) - CY -> A√√√√11SUBB A, @Ri(A) - ((Ri)) - CY -> A√√√√11SUBB A, direct(A) - (direct) - CY -> A√√√√21SUBB A, #data(A) - #data - CY -> A√√√√21

例 累加器A的内容为 0C9H,R2的内容54H,R1 = 10H,10H = 54H,(CY) = 1;

SUBB A, R2;表示将累加器A中的内容减R2的内容再减CY,(A) - (R2) - (CY) = 74H -> A,CY = 0,AC = 0,OV = 1;SUBB A, @R1;表示将累加器A中的内容减R1所指向地址空间的内容再减CY,(A) - ((R1)) - (CY) = 74H -> A,CY = 0,AC = 0,OV = 1;SUBB A, 10H;表示将累加器A中的内容减10H的内容再减CY,(A) - (10H) - (CY) = 74H -> A,CY = 0,AC = 0,OV = 1;SUBB A, 54H;表示将累加器A中的内容减立即数54H再减CY,(A) - 54H - (CY) = 74H -> A,CY = 0,AC = 0,OV = 1。 四、乘除法指令

MUL英文全称:Multiply

DIV英文全称:Divide

MUL AB

目的:将累加器A和寄存器B中两个8位无符号数乘数,所得16位积的低8位存放在A中,高8位存放在B中,乘积大于0FFH,则将OV置1,否则清零,CY总是被清零

助记符功能对标志位影响字节数周期数POVACCYDIV AB(A) * (B) -> AB√√×014

例 A中的内容04EH,B中的内容5DH

MUL AB:表示将AB两个内容相乘,高8位为1CH存放在B中,低8位为56H存放在A中,OV = 1。

DIV AB

目的:进行A除以B的运算,整数存放在A中,余数存放在B中,CY、OV均被清零,若(B) = 0则结果无法确定

助记符功能对标志位影响字节数周期数POVACCYDIV AB(A) / (B) 的商 -> A,(A) / (B) 的余数 -> B√√×014

A的内容为BFH,B中的内容为32H

DIV AB:结果(A) = 32H,(B) = 29H,标志位CY = 0,OV = 0;

五、十进制调整指令

DA英文全称:Decimal Adjust

DA A

目的:将累加器中的数进行十进制调整

助记符功能对标志位影响字节数周期数POVACCYDA A调整累加器内容为BCD码√×√√11 BCD码:二进码十进数,用4位二进制数来表示1位十进制数中的0~9这10个数码; 例 19H表示十进制的19,而非表示二进制的0001 1001; 当AC > 1或A0123 > 9则令 A + 06H -> A,就完成转化BCD码;十进制大于9时,会进位,用二进制表示十进制数就需要而额外的加06H来实现十进制数上的进位 如十进制数09H加1会进位10H,但结果为0AH,再加06H变为10H。 当CY > 1或A4567 > 9则令 A + 60H -> A,就完成转化BCD码;如果都满足3、4条件则加66H来完成BCD转化; DA常用于 ADD、ADDC指令后。 六、加一减一指令

INC英文全称:Increment DEC英文全称:Decrement

INC XXX

目的:将指定的单元内容加1 目的操作数:累加器A、寄存器Rn、直接地址direct、间接地址@Ri、16位寄存器DPTR

助记符功能对标志位影响字节数周期数POVACCYINC A(A) +1 -> A√×××11INC Rn(Rn) + 1 -> Rn××××11INC direct(direct) + 1 -> direct××××21INC @Ri((Ri)) + 1 -> (Ri)××××11INC DPTR(DPTR) + 1 -> DPTR××××12 DEC XXX

目的:将指定的单元内容加1 目的操作数:累加器A、寄存器Rn、直接地址direct、间接地址@Ri、16位寄存器DPTR

助记符功能对标志位影响字节数周期数POVACCYDEC A(A) - 1 -> A√×××11DEC Rn(Rn) - 1 -> Rn××××11DEC direct(direct) - 1 -> direct××××21DEC @Ri((Ri)) - 1 -> (Ri)××××11

51单片机之系统指令

51单片机之逻辑运算指令ANL、ORL、XRL等

51单片机之数据转移指令MOV、MOVX、MOVC等

51单片机之位操作指令SETB、CPL等

51单片机之控制转移指令SJMP、LJMP等

由本人水平有限,文章难免有错误,望告知



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3